<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <meta name="Author" content="Wilbert Dijkhof">
   <title>ConditionalReader フィルタ</title>
   <link rel="stylesheet" type="text/css" href="../../avisynth.css">
   <link rel="stylesheet" type="text/css" href="../ja.css">
</head>
<body>
<h2>
<a NAME="ConditionalFilter"></a>ConditionalReader
</h2>

<p><code>ConditionalReader </code>(<var>clip, string filename, string
variablename, bool &quot;show&quot;</var>)</p>

<p><code>ConditionalReader</code> は、各フレーム、もしくは、ある範囲のフレームに関する異なった値を含むテキストファイルから、情報をインポートすることを可能にします。</p>

<h3>パラメータ</h3>

<table border="1" width="61%">
  <tr>
    <td width="9%"><b>パラメータ</b></td>
    <td width="76%"><b>説明</b></td>
    <td width="15%"><b>デフォルト</b></td>
  </tr>
  <tr>
    <td width="9%">clip</td>
    <td width="76%">制御されるクリップ。show=true を指定しない限り、影響を受けない。</td>
    <td width="15%">必須</td>
  </tr>
  <tr>
    <td width="9%">filename</td>
    <td width="76%">設定したい変数を含むファイル。</td>
    <td width="15%">必須</td>
  </tr>
  <tr>
    <td width="9%">variablename</td>
    <td width="76%">情報を挿入させたい変数の名前。</td>
    <td width="15%">必須</td>
  </tr>
  <tr>
    <td width="9%">show</td>
    <td width="76%">true に設定すると、このフレームに与えられた値が画像の上にオーバーレイされる。</td>
    <td width="15%">false</td>
  </tr>
</table>

<h3>ファイルフォーマット</h3>

<p>ファイルは、プレーンテキスト<a href="#footnote_1" class="footnote_link">*1</a>です。区切りはすべて半角スペースによって行われ、改行は新しいデータセットを表します。大文字と小文字の区別はありません！</p>

<p><b>TYPE (int|float|bool)</b></p>
<p>各ファイルの中には、1 つの型のデータのみ含めることができます。現在のところ、<i>float</i>、<i>int</i> または <i>bool</i> の値を持つことが可能です。<b>TYPE</b> というキーワードを使用することによって型を指定します。このキーワードが見つかるまでは何も保存されないので、つねにデータの型を指定することから始めるべきです。一度設定された型は変更することができません！</p>

<p><b>DEFAULT &lt;値&gt;</b></p>
<p>すべてのフレームのデフォルト値を指定します。すべての定義されたフレームを上書きするため、型を指定した直後にこれを指定すべきです。この設定を省略するすることも可能ですが、その場合は、必ずすべてのフレームに関する設定を指定しなければなりません。さもなければ、予期せぬ結果につながるでしょう。</p>

<p><b>&lt;フレーム番号&gt; &lt;値&gt;</b></p>
<p>&lt;フレーム番号&gt; のフレームに対してのみ値を設定します。</p>

<p><b>R &lt;開始フレーム&gt; &lt;終了フレーム&gt; &lt;値&gt;</b></p>
<p>ある範囲のフレームに値を適用します。開始フレーム<b>および</b>終了フレームがともに含まれるということに注意すべきです。</p>

<p><b>I &lt;開始フレーム&gt; &lt;終了フレーム&gt; &lt;開始値&gt; &lt;終了値&gt;</b></p>
<p>ある範囲のフレームにわたって 2 つの値の間を補間します。int と float の値に関してのみ動作します。開始フレーム<b>および</b>終了フレーム がともに含まれるということに注意すべきです。</p>

<h3>型</h3>
<p>前述のとおり、指定可能な型は <i>float</i>、<i>int</i> または <i>bool</i> のいずれかです。<br>
<br>
<i>int</i> は整数で、オプションで、ある記号<a href="#footnote_2" class="footnote_link">*2</a>から開始することも可能です。<br>
<br>
<i>float</i> は小数点を含む小数で、オプションで、ある記号から開始したり、e または E と小数をあとに続けることが可能です。有効な入力は、-732.103 または 7.12e4 です。<br>
<br>
<i>bool</i> は、<i>true</i> （<i>T</i>、<i>yes</i>）または <i>false</i> （<i>F</i>、<i>no</i>）のいずれかです。</p>

<h3>使用例</h3>
<h4>基本的な使用法</h4>
<p>File.txt:</p>
<pre>Type float
Default 3.45567

R 45 300 76.5654
2 -671.454
72 -671.454</pre>

<p>上記のファイルは、float 値を返します。デフォルトでは 3.45567 を返します。しかし、フレーム 45 からフレーム 300 までは 76.5654 を返します。さらに、フレーム 2 とフレーム 72 は、-671.454 を返します。<br>
お気づきのように、後で行われた変更が、ファイルの中で先に行われた設定を無効にします。このことは、フレーム「72」によって説明されます。たとえそれが 45 から 300 の範囲の中にあったとしても、より後方で設定された値が返却されます。反対に、その範囲が「72 -671.454」の<b>後に</b>指定されたなら、76.5654 を返します。<br>
<br>
このファイルを呼び出すスクリプトは、以下のようになります:</p>

<pre>colorbars(512,512)
trim(0,500)
ScriptClip("subtitle(string(myvar))")
ConditionalReader("file.txt", "myvar", false)</pre>

<p>このスクリプトは、「myvar」という名前の変数に値を代入します。この変数は、<a href="subtitle.htm">Subtitle</a> によって使用され、条件に応じた値を表示するために <a href="conditionalfilter.htm#ScriptClip">ScriptClip</a> によって呼び出されます。</p>

<p><b>注意！</b> ConditionalReader() 行は、スクリプトの中で「myvar」を使用した<b>後に</b>来ます。</p>

<h4>Overlay の調整</h4>
<p><b>AviSynth スクリプト:</b></p>
<pre>colorbars(512,256)
a1 = trim(0,600)
a2 = MessageClip("Text clip")
overlay(a1,a2, y = 100, x = 110, mode="subtract", opacity=0, pc_range=true)
ConditionalReader("opacity.txt", "ol_opacity_offset", false)
ConditionalReader("xoffset.txt", "ol_x_offset", false)</pre>

<p><b>xoffset.txt:</b></p>
<pre>Type int
Default -50

I 25 50 -50 100
R 50 250 100
I 250 275 100 250</pre>

<p><b>opacity.txt:</b></p>
<pre>Type float
Default 0.0

I 25 50 0.0 1.0
R 50 250 1.0
I 250 275 1.0 0.0</pre>

<p>基本的には、x のオフセットと不透明度に関するキーフレームを定義しています。フレーム 25 から 50 にかけて、不透明度は 0.0 から 1.0 に拡大され、テキストは左から右へ移動しています。次に、テキストはフレーム 50 から 250 まで固定され、その後、フェードアウトしながら、さらに右へ移動します。<br>
何を行っているのかを完璧に説明するよりも、上のクリップを見た方が簡単です。</p>

<h4><a NAME="Applyrange"></a>複雑な ApplyRange</h4>
<p>すでにお気づきかもしれませんが、スクリプトの中でたくさんの <a href="animate.htm">ApplyRange()</a> を呼び出すと、リソース問題を引き起こすおそれがあります。<a href="conditionalfilter.htm">ConditionalFilter</a> とあわせて <code>ConditionalReader</code> を使用すれば、効率的な解決につながります。</p>

<p>File.txt:</p>
<pre>Type Bool
Default False

2 True
R 45 60 True
72 True
R 200 220 True
210 False
315 True</pre>

<p>上記のファイルは、ブール値<a href="#footnote_3" class="footnote_link">*3</a>を返します。デフォルトでは false を返します。しかし、フレーム 2、フレーム 45 からフレーム 60 まで、フレーム 72、フレーム 200 からフレーム 220 まで、フレーム 315 は、フレーム 210 を除いて true を返します。お気づきのように、後で行われた変更が、ファイルの中で先に行われた設定を無効にします。このことは、フレーム「210」によって説明されます。たとえ 200 から 220 の範囲にあっても、後で設定された値（false）が返却されます。<br>
<br>
このファイルを利用するスクリプトは、以下のようになります:</p>

<pre>colorbars(512,512)
trim(0,500)
A=Last
FlipHorizontal() # 複雑なフィルタチェインを追加
B=Last
ConditionalFilter(A, B, "MyVar", "==", "False", false)
ConditionalReader("File.txt", "MyVar", false)</pre>

<p>このスクリプトは、「MyVar」という名前の変数に値を代入します。この変数は、未処理のバージョンのソースと反転されたバージョンのソースから選択するために <a href="conditionalfilter.htm">ConditionalFilter</a> によって使用されます。</p>

<p><b>注意！</b> <code>ConditionalReader()</code> 行は、スクリプトの中で「MyVar」を使用した<b>後に</b>来ます。</p>

<p><kbd>原文 Date: 2006/04/10 05:32:01</kbd><br />
<kbd>日本語訳 $Date: 2008/06/30 22:20:55 $</kbd></p>
<form><input TYPE="Button" VALUE="戻る"
onClick="history.go(-1)"></form>

<hr />
<div id="footnote">
<ul>
  <li>訳者註:
    <ul>
      <li><a name="footnote_1" class="footnote_link">*1</a> <span class="footnote_text">参考: <a href="http://e-words.jp/w/E38386E382ADE382B9E38388E5BDA2E5BC8F.html">テキスト形式とは 【プレーンテキスト】 - 意味・解説 ： IT用語辞典</a></span></li>
      <li><a name="footnote_2" class="footnote_link">*2</a> <span class="footnote_text">ここでは、16 進数を指定する際に使用される接頭辞の $ を指しているものと思われます。</span></li>
      <li><a name="footnote_3" class="footnote_link">*3</a> <span class="footnote_text">true または false。</span></li>
    </ul>
  </li>
</ul>
</div>

</body>
</html>
